Checksum techniques are used for detecting errors in transmitted packets. In a checksum technique, a checksum function or algorithm is applied to a packet prior to transmission, and the resulting checksum value is stored in a field of the packet as packet metadata. At the packet destination, the same checksum algorithm may be applied to the packet, and the resulting checksum value is compared to the checksum value stored in the packet. If the two values are the same, then it is likely that the packet was not accidentally altered during transmission. If the two values differ, then at least one error has been introduced into the packet during transmission.
There are several different checksum algorithms that vary according to their ability to detect errors from relatively weak error detection that can only detect some types of errors to relatively strong error detection (e.g., 32-bit cyclic redundancy code (CRC32)) that can detect more complex errors or even maliciously introduced errors. In addition to detecting errors, some checksum techniques employ checksum algorithms that generate checksums that allow at least some detected errors to be corrected at the destination, for example error-correcting codes such as Reed-Solomon codes and erasure codes produced by erasure coding techniques, thus avoiding the need to retransmit the packets.
While embodiments are described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that embodiments are not limited to the embodiments or drawings described. It should be understood, that the drawings and detailed description thereto are not intended to limit embodiments to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope as defined by the appended claims. The headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). Similarly, the words “include”, “including”, and “includes” mean including, but not limited to.